﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProjetoBe.cs;
using ProjetoBo.cs;
using ProjetoUtil;


namespace ProjetoForm
{
    public partial class cadastroResponsavel : UserControl
    {
        public List<int> Lista { get; private set; }
        public ResponsavelBo responsavelBo = new ResponsavelBo();
        public ResponsavelBe responsavelBe = new ResponsavelBe();
        public TelefoneResponsavelBe telefone = new TelefoneResponsavelBe();
        public Util util = new Util();
        private UserControl cadastroCrianca;

        FlowLayoutPanel Conteudo { get; set; }
        public cadastroResponsavel(UserControl cadastroCrianca, FlowLayoutPanel conteudo)
        {
            InitializeComponent();
            this.cadastroCrianca = cadastroCrianca;
            txt_data_cadastro.Text = DateTime.Now.Date.ToString();
            Conteudo = conteudo;

            #region seta valores
            //txt_bairro.Text = "Vila Olimpia";
            //txt_celular.Text = "1181717820";
            //txt_telefone_fixo.Text = "1138449025    ";
            //box_parentesco.Text = "Pai";
            //txt_cep.Text = "05787000";
            //txt_complemento.Text = "Próximo ao posto de gasolina Ipiranga";
            //txt_cpf.Text = "39834235896";
            //txt_nascimento.Text = "15041993";
            //txt_nome.Text = "Jose Lima";
            //txt_numero.Text = "2609";
            //txt_rua.Text = "Rua Gomes de carvalho";
            #endregion

        }

        public void Inicializar()
        {
            this.Visible = true;
            this.Lista = new List<int>();
        }

        private void btn_cadastrar_Click(object sender, EventArgs e)
        {
            if (camposVerificados())
            {
                responsavelBe.id = responsavelBo.inserirResponsavel(responsavelBe);

                telefone.responsavel = responsavelBe;

                inserirTelefoneCelular(telefone);

                inserirTelefoneFixo(telefone);

                Lista.Add(responsavelBe.id);

                cadastroSucesso(Lista);
            }
            else
            {
                MessageBox.Show("ATENÇÃO! \n\n Verifique os campos em branco!");
            }
        }

        public void cadastroSucesso(List<int> ID)
        {
            if (ID.Count != 0)
            {
                string caption = "Cadastro responsável";
                var result = MessageBox.Show("Cadastro realizado com sucesso ! \n\nDeseja cadastrar outro Responsável ? ", caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result == DialogResult.Yes)
                    limpaTela();
                else
                {
                    this.Visible = false;
                    ((CadastroCrianca)cadastroCrianca).responsaveisCadastrados(ID);
                    Lista.Clear();
                    cadastroCrianca.Visible = true;
                }
            }
        }

        public void limpaTela()
        {
            var clear = string.Empty;
            txt_bairro.Text = clear;
            txt_celular.Text = clear;
            txt_cep.Text = clear;
            txt_complemento.Text = clear;
            txt_cpf.Text = clear;
            txt_nascimento.Text = clear;
            txt_nome.Text = clear;
            txt_numero.Text = clear;
            txt_rua.Text = clear;
            txt_telefone_fixo.Text = clear;
        }

        private void btn_cancelar_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            ((CadastroCrianca)cadastroCrianca).responsaveisCadastrados(Lista);
            cadastroCrianca.Visible = true;
        }

        public bool camposVerificados()
        {
            bool verificador = true;

            try
            {
                if (txt_nome.Text != string.Empty)
                    responsavelBe.nome = txt_nome.Text;
                else
                    verificador = false;

                if (txt_data_cadastro.Text != string.Empty)
                    responsavelBe.data_cadastro = Convert.ToDateTime(txt_data_cadastro.Text);
                else
                    verificador = false;

                if (util.stringSemCaracter(txt_nascimento.Text) != string.Empty)
                    responsavelBe.nascimento = Convert.ToDateTime(txt_nascimento.Text);
                else
                    verificador = false;

                if (box_parentesco.SelectedItem.ToString() != string.Empty)
                    responsavelBe.parentesco = box_parentesco.SelectedItem.ToString();
                else
                    verificador = false;

                if (txt_cpf.Text != string.Empty)
                    responsavelBe.cpf = txt_cpf.Text;
                else
                    verificador = false;

                if (txt_rua.Text != string.Empty)
                    responsavelBe.endereco.rua = txt_rua.Text;
                else
                    verificador = false;

                if (txt_numero.Text != string.Empty)
                    responsavelBe.endereco.numero = Convert.ToInt32(txt_numero.Text);
                else
                    verificador = false;

                if (txt_bairro.Text != string.Empty)
                    responsavelBe.endereco.bairro = txt_bairro.Text;
                else
                    verificador = false;

                if (txt_cep.Text != string.Empty)
                    responsavelBe.endereco.cep = txt_cep.Text;
                else
                    verificador = false;

                if (txt_complemento.Text != string.Empty)
                    responsavelBe.endereco.complemento = txt_complemento.Text;
                else
                    verificador = false;
            }
            catch { }

            return verificador;
        }

        public void inserirTelefoneFixo(TelefoneResponsavelBe Telefone)
        {
            if (txt_telefone_fixo.Text != string.Empty)
            {
                telefone.telefone = txt_telefone_fixo.Text;
                telefone.tipo = "Fixo";
                responsavelBo.inserirTelefone(telefone);
            }
            else
            {
                MessageBox.Show("ATENÇÃO! \n\n Verifique o Telefone fixo!");
                inserirTelefoneFixo(Telefone);
            }
        }

        public void inserirTelefoneCelular(TelefoneResponsavelBe Telefone)
        {
            if (txt_celular.Text != string.Empty)
            {
                telefone.telefone = txt_celular.Text;
                telefone.tipo = "Celular";
                responsavelBo.inserirTelefone(telefone);
            }
            else
            {
                MessageBox.Show("ATENÇÃO! \n\n Verifique o telefone celular!");
                inserirTelefoneCelular(Telefone);
            }
        }
    }
}

